/*
 * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

/**
 * 抛出以指示 {@code invokedynamic} 指令未能找到其引导方法，
 * 或引导方法未能提供具有正确
 * {@linkplain java.lang.invoke.MethodHandle#type 方法类型}
 * 的 {@linkplain java.lang.invoke.CallSite#getTarget 目标}
 * 的 {@linkplain java.lang.invoke.CallSite 调用点}。
 *
 * @author John Rose, JSR 292 EG
 * @since 1.7
 */
public class BootstrapMethodError extends LinkageError {
    private static final long serialVersionUID = 292L;

    /**
     * 构造一个没有详细消息的 {@code BootstrapMethodError}。
     */
    public BootstrapMethodError() {
        super();
    }

    /**
     * 构造一个具有指定详细消息的 {@code BootstrapMethodError}。
     *
     * @param s 详细消息。
     */
    public BootstrapMethodError(String s) {
        super(s);
    }

    /**
     * 构造一个具有指定详细消息和原因的 {@code BootstrapMethodError}。
     *
     * @param s 详细消息。
     * @param cause 原因，可以为 {@code null}。
     */
    public BootstrapMethodError(String s, Throwable cause) {
        super(s, cause);
    }

    /**
     * 构造一个具有指定原因的 {@code BootstrapMethodError}。
     *
     * @param cause 原因，可以为 {@code null}。
     */
    public BootstrapMethodError(Throwable cause) {
        // cf. Throwable(Throwable cause) constructor.
        super(cause == null ? null : cause.toString());
        initCause(cause);
    }
}
